package utils

import (
	"baokaobang/conf"
	"encoding/json"
	"net/url"
)

type RealNameIdcard struct {
	Key      string `json:"key"`
	Idcard   string `json:"idcard"`   // 身份证号
	Realname string `json:"realname"` // 姓名
	Orderid  string `json:"orderid"`  // 传1时返回单号，默认不返回单号
}

type RealNameIdcardResult struct {
	Realname string `json:"realname"`
	Idcard   string `json:"idcard"`
	Orderid  string `json:"orderid"`
	Res      int    `json:"res"`
}

type RealNameIdcardRes struct {
	ErrorCode int    `json:"error_code"`
	Reason    string `json:"reason"`
	Result    RealNameIdcardResult
}

func NewRealNameIdcard(idcard, realname string) *RealNameIdcard {
	return &RealNameIdcard{
		Key:      conf.PolymerizationConfig.Key,
		Idcard:   idcard,
		Realname: realname,
		Orderid:  "1",
	}
}

// 验证身份证号与姓名是否一致
func (r *RealNameIdcard) Verify() (*RealNameIdcardRes, error) {
	reqUrl := "http://op.juhe.cn/idcard/query"
	values := url.Values{
		"idcard":   {r.Idcard},
		"realname": {r.Realname},
		"key":      {r.Key},
		"orderid":  {r.Orderid},
	}
	res, err := PostRequest(reqUrl, values)
	if err != nil {
		return nil, err
	}
	var data RealNameIdcardRes
	if err := json.Unmarshal(res, &data); err != nil {
		return nil, err
	}
	return &data, nil
}
